perm filename OPDECL.OLD[PNT,HE]2 blob
sn#485590 filedate 1980-01-15 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00002 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00002 00002 REdefine
C00014 ENDMK
C⊗;
REdefine
preload_array(name, defs, type, first, len)"[][]"=[
preload_with defs null; type array name[first:first+len] ];
ifc false thenc REdefine
preset_array(name, defs, type, first, len) "[][]"=[
preset_with defs null; type array name[first:first+len] ];
endc
REdefine
indices(name, postfix)"[][]"=[
redefine xxcount=1;
redefine xx(xxarg)=[
redefine xxtemp= [ define xxarg]&[postfix=xxcount];
xxtemp;
redefine xxcount=xxcount+1;];
name ];
define op_list "[][]"=[
ZZ("≡", eqv, EXP_XX, [F3←1-(B1 XOR B2)])
XXX(XEQV, #SC,120,#SC, #SC, 0)
ZZ("EQV", eeqv, EXP_XX, [F3←1-(B1 XOR B2)])
XXX(XEQV, #SC,120,#SC, #SC, 0)
ZZ("∨", or, BEFACT_XX, [F3←B1 LOR B2])
XXX(XLOR, #SC,120,#SC, #SC, 0)
ZZ("OR", oor, BEFACT_XX, [F3←B1 LOR B2])
XXX(XLOR, #SC,120,#SC, #SC, 0)
ZZ("⊗", xor, BEFACT_XX, [F3←B1 XOR B2])
XXX(XXOR, #SC,120,#SC, #SC, 0)
ZZ("XOR", xxor, BEFACT_XX, [F3←B1 XOR B2])
XXX(XXOR, #SC,120,#SC, #SC, 0)
ZZ("∧", and, BFACT_XX, [F3←B1 LAND B2])
XXX(XAND, #SC,120,#SC, #SC, 0)
ZZ("AND", aand, BFACT_XX, [F3←B1 LAND B2])
XXX(XAND, #SC,120,#SC, #SC, 0)
ZZ("=", seq, BTERM_XX, [F3← -(F1=F2)])
XXX(XSEQ, #SC,120,#SC, #SC, 0)
ZZ("≠", sne, BTERM_XX, [F3← -(F1≠F2)])
XXX(XSNE, #SC,120,#SC, #SC, 0)
ZZ(">", sgt, BTERM_XX, [F3← -(F1>F2)])
XXX(XSGT, #SC,120,#SC, #SC, 0)
ZZ("<", slt, BTERM_XX, [F3← -(F1<F2)])
XXX(XSLT, #SC,120,#SC, #SC, 0)
ZZ("≥", sge, BTERM_XX, [F3← -(F1≥F2)])
XXX(XSGE, #SC,120,#SC, #SC, 0)
ZZ("≤", sle, BTERM_XX, [F3← -(F1≤F2)])
XXX(XSLE, #SC,120,#SC, #SC, 0)
ZZ("+", Plus, AEXP_XX, [F3← F1 + F2])
XXX(XSPLUS, #SC,100,#SC, 0, 0)
XXX(XSADD, #SC,120,#SC, #SC, 0)
XXX(XVPLUS, #VT,100,#VT, 0, 0)
XXX(XVADD, #VT,120,#VT, #VT, 0)
XXX(XTVADD, #TR,120,#VT, #TR, 0)
XXX(XTVADD, #FRE,120,#VT, #FR, 0)
XXX(XTVADD, #TR,120,#TR, #VT, 0)
XXX(XTVADD, #FRE,120,#FR, #VT, 0)
ZZ("-", minus, AEXP_XX, [F3← F1 - F2])
XXX(XSNEG, #SC,100,#SC, 0, 0)
XXX(XSSUB, #SC,120,#SC, #SC, 0)
XXX(XVNEG, #VT,100,#VT, 0, 0)
XXX(XVSUB, #VT,120,#VT, #VT, 0)
XXX(XTVSUB, #TR,120,#TR, #VT, 0)
XXX(XTVSUB, #FRE,120,#FR, #VT, 0)
ZZ(".", vdot, TERM_XX, [])
XXX(XVDOT, #SC,120,#VT, #VT, 0)
ZZ("*", times, TERM_XX, [F3← F1 * F2])
XXX(XSMUL, #SC,120,#SC, #SC, 0)
XXX(XSVMUL, #VT,120,#SC, #VT, 0)
XXX(XVSMUL, #VT,210,#VT, #SC, 0)
XXX(XVCROSS, #VT,120,#VT, #VT, 0)
XXX(XTVMUL, #VT,120,#RT, #VT, 0)
XXX(XTTMUL, #RT,120,#RT, #RT, 0)
XXX(XTVMUL, #VT,120,#TR, #VT, 0)
XXX(XTTMUL, #TR,120,#TR, #TR, 0)
XXX(XTTMUL, #FRE,120,#TR, #FR, 0)
XXX(XTTMUL, #FRE,120,#FR, #TR, 0)
XXX(XTTMUL, #FRE,120,#FR, #FR, 0)
ZZ("/", sdiv, TERM_XX, [F3← F1 / F2])
XXX(XSDIV, #SC,120,#SC, #SC, 0)
XXX(XVSDIV, #VT,120,#VT, #SC, 0)
ZZ("MAX", max, TERM_XX, [F3← F1 MAX F2])
XXX(XMAX, #SC,120,#SC, #SC, 0)
ZZ("MIN", min, TERM_XX, [F3← F1 MIN F2])
XXX(XMIN, #SC,120,#SC, #SC, 0)
ZZ("DIV", div, TERM_XX, [F3← I1 DIV I2])
XXX(XIDIV, #SC,120,#SC, #SC, 0)
ZZ("MOD", mod, TERM_XX, [F3← I1 MOD I2])
XXX(XMOD, #SC,120,#SC, #SC, 0)
ZZ("REL", rel, FACTOR_XX, [])
XXX(XVFREL, #VT,210,#VT, #TR, 0)
XXX(XVFREL, #VT,210,#VT, #FR, 0)
XXX(XFFREL, #TR,210,#TR, #TR, 0)
XXX(XFFREL, #TR,210,#TR, #FR, 0)
XXX(XFFREL, #TR,210,#FR, #TR, 0)
XXX(XFFREL, #TR,210,#FR, #FR, 0)
ZZ("WRT", wrt, FACTOR_XX, [])
XXX(XWRT, #VT,210,#VT, #TR, 0)
XXX(XWRT, #VT,210,#VT, #FR, 0)
ZZ("→", frontarrow, FACTOR_XX, [])
XXX(XFTOF, #TR,120,#TR, #TR, 0)
XXX(XFTOF, #TR,120,#TR, #FR, 0)
XXX(XFTOF, #TR,120,#FR, #TR, 0)
XXX(XFTOF, #TR,120,#FR, #FR, 0)
ZZ("↑", stos, FACTOR_XX, [F3←F1↑F2])
XXX(XSEXP, #SC, 120,#SC, #SC, 0)
XXX(XUPARROW, #FRE,100,#TR, 0, 0) ! these two actually pf_XX;
XXX(XUPARROW, #FRE,100,#FR, 0, 0)
ZZ("¬", not, PF_XX, [F3←1-B2])
XXX(XNOT, #SC,100,#SC, 0, 0)
ZZ("ORIENT", orient, PF_XX, [])
XXX(XTORIEN, #RT,100,#TR, 0, 0)
XXX(XTORIEN, #RT,100,#FR, 0, 0)
ZZ("UNIT", uvect, PF_XX, [])
XXX(XUNITV, #VT,100,#VT, 0, 0)
ZZ("AXIS", axis, PF_XX, [])
XXX(XTAXIS, #VT,100,#RT, 0, 0)
ZZ("POS", pos, PF_XX, [])
XXX(XTPOS, #VT,100,#TR, 0, 0)
XXX(XTPOS, #VT,100,#FR, 0, 0)
ZZ("INV", rinv, PF_XX, [])
XXX(XTINVRT, #RT,100,#RT, 0, 0)
XXX(XTINVRT, #TR,100,#TR, 0, 0)
XXX(XTINVRT, #TR,100,#FR, 0, 0)
ZZ("INT", int, PF_XX, [F3←I2])
XXX(XINT, #SC,100,#SC, 0, 0)
ZZ("CONSTRUCT", construct, PF_XX, [])
XXX(XCONSTR, #TR,123,#VT, #VT, #VT)
XXX(XFCONSTR, #TR,123,#FR, #FR, #FR)
ZZ("SQRT", sqrt, PF_XX, [F3←SQRT(F2)])
XXX(XSQRT, #SC,100,#SC, 0, 0)
ZZ("SIN", sin, PF_XX, [F3←SIND(F2)])
XXX(XSIN, #SC,100,#SC, 0, 0)
ZZ("COS", cos, PF_XX, [F3←COSD(F2)])
XXX(XCOS, #SC,100,#SC, 0, 0)
ZZ("TAN", tan, PF_XX, [F3←SIND(F2)/COSD(F2)])
XXX(XTAN, #SC,100,#SC, 0, 0)
ZZ("ASIN", asin, PF_XX, [F3←(180.0/π)*ASIN(F2)])
XXX(XASIN, #SC,100,#SC, 0, 0)
ZZ("ACOS", acos, PF_XX, [F3←(180.0/π)*ACOS(F2)])
XXX(XACOS, #SC,100,#SC, 0, 0)
ZZ("ATAN2", atan2, PF_XX, [F3←(180.0/π)*ATAN2(F1,F2)])
XXX(XATAN2, #SC,120,#SC, #SC, 0)
ZZ("LOG", log, PF_XX, [F3←LOG(F2)])
XXX(XLOG, #SC,100,#SC, 0, 0)
ZZ("EXP", exp, PF_XX, [F3←EXP(F2)])
XXX(XEXP, #SC,100,#SC, 0, 0)
ZZ("|", MAGNITUDE, PF_XX, [F3←ABS(F2)])
XXX(XSABS, #SC,100,#SC, 0, 0)
XXX(XVMAGN, #SC,100,#VT, 0, 0)
XXX(XTMAGN, #SC,100,#RT, 0, 0)
ZZ(["("], LPAREN, PF_XX, [])
ZZ(["( , , )"], IMPLICIT, PF_XX, [])
XXX(XVMAKE, #VT,123,#SC, #SC, #SC)
XXX(XVSAXWR, #RT,120,#VT, #SC, 0)
XXX(XTMAKE, #TR,120,#RT, #VT, 0)
ZZ("↓", DOWNARROW, PF_XX, [])
XXX(XDWNARROW, #FRE,100,#TR, 0, 0)
XXX(XDWNARROW, #FRE,100,#FR, 0, 0)
ZZ("$", DOLLAR, PF_XX, [])
XXX(XDOLLAR, #FRE,100,#TR, 0, 0)
XXX(XDOLLAR, #FRE,100,#FR, 0, 0)
ZZ("α", ALPHA, PF_XX, [])
XXX(XALPHA, #FRE,100,#TR, 0, 0)
XXX(XALPHA, #FRE,100,#FR, 0, 0)
ZZ("EVAL", EVAL, PF_XX, [])
XXX(XEVAL, #SC,100,#SC, 0, 0)
XXX(XEVAL, #VT,100,#VT, 0, 0)
XXX(XEVAL, #RT,100,#RT, 0, 0)
XXX(XEVAL, #TR,100,#TR, 0, 0)
XXX(XEVAL, #FR,100,#FR, 0, 0)
ZZ("FRAME", FRAME, PF_XX, [])
XXX(XTMAKE, #FR,120,#RT, #VT, 0)
ZZ("VECTOR", VECTOR, PF_XX, [])
XXX(XVMAKE, #VT,123,#SC, #SC, #SC)
ZZ("TRANS", TRANS, PF_XX, [])
XXX(XTMAKE, #TR,120,#RT, #VT, 0)
ZZ("ROT", ROT, PF_XX, [])
XXX(XVSAXWR, #RT,120,#VT, #SC, 0)
ZZ("XCOORD", coordx, PF_XX, [])
XXX(XGTXC, #SC,100,#VT, 0, 0)
XXX(XGTXC, #SC,100,#TR, 0, 0)
XXX(XGTXC, #SC,100,#FR, 0, 0)
ZZ("YCOORD", coordy, PF_XX, [])
XXX(XGTYC, #SC,100,#VT, 0, 0)
XXX(XGTYC, #SC,100,#TR, 0, 0)
XXX(XGTYC, #SC,100,#FR, 0, 0)
ZZ("ZCOORD", coordz, PF_XX, [])
XXX(XGTZC, #SC,100,#VT, 0, 0)
XXX(XGTZC, #SC,100,#TR, 0, 0)
XXX(XGTZC, #SC,100,#FR, 0, 0)
ZZ("INSCALAR", inscalar, PF_XX, [])
XXX(XSCALRD, #SC,000,0, 0, 0)
ZZ("QUERY", qquery, PF_XX, [])
XXX(XQUERY, #SC,000,0, 0, 0)
];
REQUIRE "[][]" DELIMITERS;
REDEFINE ZZ(ARG0,ARG1,ARG2)=[XX(ARG1)];
REDEFINE XXX(ARGNAME,ARGTYPE,ARGORDER,ARG1,ARG2,ARG3)=[];
indices(op_list,_X) ;
DEFINE EXP_XX=1,BEFACT_XX=2,BFACT_XX=3,BTERM_XX=4,AEXP_XX=5,TERM_XX=6,
FACTOR_XX=7, PF_XX=8;
DEFINE #PNTINTOPS=XXCOUNT-1;
DEFINE #OPERATORS=#PNTINTOPS;